【JVM】MAC下编译OpenJDK 10

最近学习《深入理解Java虚拟机》,书中第一章便是手动编译JDK,可书中使用的OpenJDK 7版本比较老旧,笔者便结合书本与博客开始手动编译OpenJDK 10,不得不说最后成功显示带有自己名字的JDK版本时,挺自豪的~

环境准备

  1. macOS系统版本:10.13.6。
  2. AppStore中安装Xcode,笔者使用版本为:9.4.1。

  3. 由于macOS没有官方的软件包管理器,使用HomeBrew填补。

  4. 安装FileType「一个免费提供的软件库,用于渲染字体」。命令:

    1
    $ brew install freetype
  5. 安装ccache「编译器缓存,可以提高Xcode的编译速度」。命令:

    1
    $ brew install ccache
  6. OpenJDK 10源码下载,并解压至无中文的目录。

  7. 安装JDK 10.0.2「因OpenJDK中的大部分代码使用Java自身实现的,因此需要一个可用的JDK,官方称之为『Bootstrap JDK』,官网中现支持下载JDK 10.0.2和JDK 8u181两个版本,笔者曾使用JDK 8u181无法编译,提示版本过低,故此采用JDK 10.0.2」。

构建

  1. 进入解压后的OpenJDK目录,笔者的地址为/Users/wuzhi/JVM/openjdk

    进入OpenJDK目录

  2. 设定语言。

    1
    $ export LANG=C
  3. 如果之前设置了JAVA_HOME和CLASSPATH两个环境变量,编译前需取消,否则会编译报错。

    1
    2
    $ unset JAVA_HAME
    $ unset CLASSPATH

    未取消环境变量时,编译报错如下。

    编译报错

  4. 更改配置,--with-boot-jdk为Bootstrap JDK地址,--disable-warnings-as-errors可以忽略警告,--with-target-bits=64 指定JVM为64位。

    1
    $ bash configure --with-boot-jdk=/Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home --disable-warnings-as-errors --with-target-bits=64

    若配置成功,提示信息如下。

    配置成功

  5. 开始编译。

    1
    $ make images

    编译过程中,CPU将会爆满,全量编译整个OpenJDK大概耗时12分钟,由于机器配置不同可能会导致编译时长有所差异。若编译成功,提示信息如下。

    编译成功

  6. 查看编译结果,位于OpenJDK目录/build/macosx-x86_64-normal-server-release/,如下。

    编译结果

  7. 查看编译结果的版本信息。

    1
    2
    3
    4
    $ ./build/macosx-x86_64-normal-server-slowdebug/jdk/bin/java -version
    openjdk version "10-internal" 2018-03-20
    OpenJDK Runtime Environment (build 10-internal+0-adhoc.wuzhi.openjdk)
    OpenJDK 64-Bit Server VM (build 10-internal+0-adhoc.wuzhi.openjdk, mixed mode)

参考资料

  1. 在Mac下自己编译出一个OpenJDK10——by atao

  2. Java虚拟机学习笔记(一)macOS 10.12 编译JDK9——by 七弦生

Newer Post

【JVM】MAC下搭建OpenJDK 10调试环境

在深入了解JVM、阅读OpenJDK源码的过程中,经常需要通过Debug来帮助理解。《深入理解Java虚拟机》书中介绍的是OpenJDK 7,远低于当前的版本,笔者实际搭建OpenJDK 10调试环境的过程比书中OpenJDK 7的调试步骤简单太多,时代在进步啊。 环境准备 macOS系统版本:10 …

JVM, 深入理解JAVA虚拟机, 读书笔记 继续阅读
Older Post

【随笔】Day 1

今天下午开始搭建博客,半小时就成功了;而晚上一直在选择博客,弄到现在将近凌晨12点了。然后一直纠结主页图片用哪一张,找了将近两个小时……果然选择困难者患者 …

日常随笔 继续阅读